from django import template
from django.utils.html import format_html

register = template.Library()



# 自定义分页标签
@register.simple_tag
def showpage(num,request):
    if not num :
        return ''

    # 获取当前页，并转为int进行计算
    p = int(request.GET.get('page',1))
    start = p - 5
    end = p + 4

    # 总页数小于总范围
    if num <= 10:
        start = 1
        end = num

    # p-5 超出最小范围
    elif p <= 5:
        start = 1
        end = 10

    # p+4 超出最大范围
    elif p > num - 4:
        end = num
        start = end - 9

    # 字符串拼接后return拼接结果，输出页码标签
    pagehtml = f'<li>总计：{num}页，当前：第{p}页 &nbsp;&nbsp;</li>'

    # 首页
    pagehtml += '<li><a href="?page=1">首页</a></li>'

    # 上一页，首页无法点击
    if p-1 < 1 :
        pagehtml += '<li class="am-disabled"><a href="?page=1">上一页</a></li>'
    else :
        pagehtml += f'<li><a href="?page={p-1}">上一页</a></li>'

    # 输出范围内的页码标签，并高亮当前标签
    for i in range(start, end + 1):
        if i == p :
            pagehtml += f'<li class="am-active"><a href="?page={i}">{i}</a></li>'
        else :
            pagehtml += f'<li><a href="?page={i}">{i}</a></li>'

    # 下一页，尾页无法点击
    if p+1 > num :
        pagehtml += f'<li class="am-disabled"><a href="?page={num}">下一页</a></li>'
    else :
        pagehtml += f'<li><a href="?page={p+1}">下一页</a></li>'

    # 尾页
    pagehtml += f'<li><a href="?page={num}">尾页</a></li>'

    return format_html(pagehtml)